A Feature has Components. Each component is either scoped or a widget. When I request a Feature, it can be the HTML
version, the JSON version, or the code version. The HTML version returns the description, permissions required, etc.
The "user friendly" version. The JSON version returns similar information as a JSON structure.

Finally, the code version returns the code required to run the Feature based on the URL of the current page that the
user is on. Widgets return JavaScript that creates an iframe. Scoped Components just return whatever JavaScript is
defined.

Scoped Components look for a "main.js" via classpath. Widgets use codeURL to load an iframe.